#pragma once

#include "../SGD Wrappers/CSGD_TextureManager.h"
#include "../SGD Wrappers/CSGD_DirectInput.h"
#include "../SGD Wrappers/CSGD_XAudio2.h"
#include "../SGD Wrappers/CSGD_Direct3D.h"

class GameState
{
protected:
	CSGD_TextureManager*	tM;
	CSGD_DirectInput*		dI;
	CSGD_XAudio2*			xA;
	CSGD_Direct3D*			D3D;

	//Delay for controller input(mostly for menus)
	float controllerDelay;


public:
	// Constructor
	GameState(void);
	// Destructor
	virtual ~GameState(void) = 0;
	GameState( const GameState& );				// copy ctor
	GameState& operator= ( const GameState& );	// assignment op

	//////////////////////////////////////////////////////////
	// Singleton accessors:
	//static GameState* GetInstance( void );
	//static void DeleteInstance( void );



	//////////////////////////////////////////////////
	// Methods:
	virtual void Update(float deltaTime) = 0;
	virtual void Render(void) const = 0;
	virtual void Enter(void) = 0;
	virtual void Exit(void) = 0;
};

